Skip to content

feat(release): version from ECR + marker-ref baselines, not git tags - #23

Merged
blairham merged 1 commit into
mainfrom
feat/version-from-ecr
Jul 2, 2026
Merged

feat(release): version from ECR + marker-ref baselines, not git tags#23
blairham merged 1 commit into
mainfrom
feat/version-from-ecr

Conversation

@blairham

@blairham blairham commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Resolve the next release version from ECR (highest strict X.Y.Z tag + 1, probe-and-bump past collisions) instead of the latest image/*/chart/* git tag — ECR is the version record now that retention actually works (platform-gitops#1200). The tag-reclaiming recovery loop is obsolete and removed.
  • Replace the change-detection baselines (the discover-services build gate and chart-release's change-skip, which run in jobs with no AWS credentials) with per-service mutable marker refs refs/releases/{image,chart}/<svc>, force-advanced to the released SHA on each successful push. Not tags → invisible to Kargo's tag enumeration and the GitHub create webhook, constant ref count. Fallback order: marker ref → legacy tag → rebuild, so migration self-heals as each service releases once.
  • Chart version resolution moves from prepare (credential-less) to package; the matrix no longer carries a precomputed version.
  • image/*/chart/* tags and the aggregated GitHub Releases are still minted — Dispatch correlates on the create webhook until the direct CI notification lands. This is PR 1 of the platform-gitops#1201 sequence (stop-minting comes last).

Test plan

  • actionlint clean (the repo's CI check)
  • Version pipeline exercised against live ECR: parity with the git-tag source on oms (0.0.520), trade-writer (0.0.508), reconciler (0.0.530), nadex-oegw (0.0.435); empty repo (charts/data-hub) and missing repo both resolve to first-release 0.0.1
  • Marker-ref mechanics (force-advance, explicit fetch refspec, rev-parse --verify fallback, diff-against-marker) proven in scratch bare/clone repos
  • Post-merge smoke: push a trivial change to a low-stakes caller (e.g. service-template) and watch one release resolve its version from ECR and advance its marker ref — callers pin @main, so this propagates org-wide immediately

🤖 Generated with Claude Code

image/* and chart/* git tags accumulate ~80/day and tax Kargo's git
tag enumeration; ECR already holds the authoritative version record
(retention fixed in platform-gitops#1200). Next version is now the
highest X.Y.Z tag in the service's ECR repo plus one, and the
change-detection baseline moves from the last release tag to a single
mutable refs/releases/{image,chart}/<svc> marker ref — readable from
jobs without AWS credentials (discover-services, chart prepare) and
invisible to Kargo and the create-webhook. Legacy tags fall back as
baseline until each service releases once, and are still minted for
Dispatch correlation until the direct CI notification lands
(platform-gitops#1201 dependency 2).

Chart version resolution moves from the prepare job to the package
job, which holds the AWS credentials; the matrix no longer carries a
precomputed version.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@blairham
blairham merged commit d902fff into main Jul 2, 2026
2 checks passed
@blairham
blairham deleted the feat/version-from-ecr branch July 5, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant